Parallel Execution টেস্টএনজির একটি গুরুত্বপূর্ণ ফিচার যা একই সময়ে একাধিক টেস্ট চালানোর অনুমতি দেয়। বড় এবং জটিল প্রজেক্টে যেখানে অনেকগুলো টেস্ট চালানো হয়, সেখানেই এই ফিচার টেস্টিং প্রক্রিয়াকে আরও দ্রুত এবং কার্যকর করতে সাহায্য করে। TestNG XML ফাইল ব্যবহার করে Parallel Execution খুব সহজেই কনফিগার করা যায়।
Parallel Execution কী এবং কেন ব্যবহার করা হয়?
Parallel Execution হলো একাধিক টেস্ট, ক্লাস, বা মেথড একই সময়ে আলাদাভাবে চালানোর পদ্ধতি। এটি ব্যবহারের কয়েকটি কারণ:
- সময় সাশ্রয়: বড় প্রজেক্টের টেস্টিংয়ের সময় উল্লেখযোগ্যভাবে কমিয়ে আনে।
- রিসোর্সের কার্যকর ব্যবহার: উপলব্ধ সিপিইউ কোরগুলো সর্বোচ্চ ব্যবহৃত হয়।
- ত্বরান্বিত CI/CD প্রক্রিয়া: টেস্টিং দ্রুত হওয়ায় সফটওয়্যার ডেলিভারি চক্র ছোট হয়।
TestNG XML দিয়ে Parallel Execution কনফিগার করার উপায়
TestNG XML ফাইল ব্যবহার করে তিনভাবে Parallel Execution চালানো যায়:
- Tests: একাধিক টেস্ট প্যারালালে রান করানো।
- Classes: একই টেস্টের মধ্যে বিভিন্ন ক্লাস প্যারালালে চালানো।
- Methods: একই ক্লাসের বিভিন্ন মেথড প্যারালালে চালানো।
XML ফাইলের মূল কাঠামো
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelSuite" parallel="tests" thread-count="4">
<test name="Test1">
<classes>
<class name="com.example.TestClass1" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="com.example.TestClass2" />
</classes>
</test>
</suite>
Parallel Execution এর জন্য XML কনফিগারেশন উদাহরণ
১. Parallel Execution on Tests
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelTestsSuite" parallel="tests" thread-count="2">
<test name="Test1">
<classes>
<class name="com.example.TestClass1" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="com.example.TestClass2" />
</classes>
</test>
</suite>
ব্যাখ্যা:
- parallel="tests": এটি টেস্ট লেভেলে প্যারালাল এক্সিকিউশন চালায়।
- thread-count="2": দুটি থ্রেড ব্যবহার করে একসঙ্গে দুটি টেস্ট চালানো হবে।
২. Parallel Execution on Classes
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelClassesSuite" parallel="classes" thread-count="3">
<test name="TestClassExecution">
<classes>
<class name="com.example.TestClass1" />
<class name="com.example.TestClass2" />
<class name="com.example.TestClass3" />
</classes>
</test>
</suite>
ব্যাখ্যা:
- parallel="classes": একই টেস্টের মধ্যে তিনটি ক্লাস প্যারালালে চালানো হবে।
- thread-count="3": তিনটি ক্লাস একসঙ্গে রান করতে তিনটি থ্রেড ব্যবহার হবে।
৩. Parallel Execution on Methods
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelMethodsSuite" parallel="methods" thread-count="5">
<test name="TestMethodExecution">
<classes>
<class name="com.example.TestClass" />
</classes>
</test>
</suite>
ব্যাখ্যা:
- parallel="methods": একই ক্লাসের মেথডগুলো প্যারালালে চালানো হবে।
- thread-count="5": সর্বোচ্চ পাঁচটি মেথড একসঙ্গে চালানো যাবে।
Thread Count কনফিগারেশন
- Thread Count হলো প্যারালাল এক্সিকিউশনের সময় কতটি থ্রেড ব্যবহার হবে তার সংখ্যা।
- যদি thread-count নির্ধারণ না করা হয়, তাহলে ডিফল্টভাবে TestNG একক থ্রেডে সব টেস্ট চালায়।
- এই সংখ্যা আপনার মেশিনের CPU Cores এর ওপর নির্ভর করে সঠিকভাবে নির্ধারণ করা উচিত।
একটি সম্পূর্ণ উদাহরণ
টেস্ট ক্লাস:
import org.testng.annotations.Test;
public class TestClass {
@Test
public void testMethod1() {
System.out.println("Executing Method 1 - " + Thread.currentThread().getId());
}
@Test
public void testMethod2() {
System.out.println("Executing Method 2 - " + Thread.currentThread().getId());
}
@Test
public void testMethod3() {
System.out.println("Executing Method 3 - " + Thread.currentThread().getId());
}
}
XML ফাইল:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelExample" parallel="methods" thread-count="3">
<test name="ParallelTest">
<classes>
<class name="com.example.TestClass" />
</classes>
</test>
</suite>
আউটপুট (কনসোল):
Executing Method 1 - 12
Executing Method 2 - 13
Executing Method 3 - 14
এখানে প্রতিটি মেথড আলাদা থ্রেডে চালিত হয়েছে।
Parallel Execution ব্যবহারের সতর্কতা
- Shared Resources: প্যারালাল এক্সিকিউশনের সময় একাধিক থ্রেড একাধিক রিসোর্স অ্যাক্সেস করলে ডেডলক বা ডাটা ইনকনসিস্টেন্সি হতে পারে।
- Thread Safety: মেথডগুলো থ্রেড সেফ কিনা তা নিশ্চিত করতে হবে।
- Environment Compatibility: সব পরিবেশ প্যারালাল এক্সিকিউশন সমর্থন নাও করতে পারে।
সারাংশ
TestNG XML এর মাধ্যমে Parallel Execution কনফিগার করে টেস্টিং প্রক্রিয়া দ্রুততর করা যায়। Tests, Classes, এবং Methods লেভেলে প্যারালাল টেস্টিং চালিয়ে বড় এবং জটিল প্রজেক্টের টেস্টিং আরও কার্যকর করা সম্ভব। প্যারালাল এক্সিকিউশন সেটআপ করার সময় উপযুক্ত thread-count এবং রিসোর্স ম্যানেজমেন্টের দিকে বিশেষ নজর দিতে হবে।
Read more